Web applications such as web mail services, search engines, online stores, portals, social networks, and others are being increasingly deployed in data centers or sites that are distributed over many geographic locations. Data of these web applications are often replicated and stored in different data centers to provide disaster tolerance, access locality, and read scalability. It is necessary to maintain consistency of these replicated data among different data centers, which requires synchronization of data across the different data centers, henceforth called sites. However, such data synchronization may often suffer from problems of congestion in the network, thereby causing transmission latency unacceptable to users.
A conventional solution is to increase bandwidth of the cross-site links for peak usage. This solution, however, can be expensive and wasteful, especially since many computing systems may not frequently operate at peak usage.